package com.furkid.service.mapper;

import com.furkid.service.domain.pet.Pet;
import com.furkid.service.domain.pet.PetBreed;
import com.furkid.service.domain.pet.PetType;
import com.furkid.service.domain.pet.PetWeight;
import org.apache.ibatis.annotations.Mapper;

import java.util.List;

@Mapper
public interface PetMapper {
    /**
     * 获取宠物列表
     * @param userId 用户id
     * @return 返回宠物列表
     */
    public List<Pet> listPets(Long userId);

    /**
     * 查询宠物
     * @param userId 用户id
     * @param name 宠物名称
     * @return 返回查询结果
     */
    public List<Pet> searchPetByName(Long userId, String name);

    /**
     * 通过id查询宠物信息
     * @param userId 用户id
     * @param petId 宠物id
     * @return 返回宠物信息
     */
    public Pet searchPetById(Long userId, Long petId);

    /**
     * 获取宠物类型列表
     * @return 返回宠物类型列表
     */
    public List<PetType> petTypeList();

    /**
     * 获取宠物类型对应的宠物品种
     * @param petTypeId 宠物类型id
     * @return 返回宠物类型对应的宠物品种
     */
    public List<PetBreed> petBreedList(Integer petTypeId);

    /**
     * 添加宠物
     * @param pet 宠物信息
     * @return 返回影响的行数
     */
    public int addPet(Pet pet);

    /**
     * 查询宠物是否存在
     * @param id 宠物id
     * @return 返回查询结果
     */
    public Pet selectPetById(Long id);

    /**
     * 删除宠物
     * @param id 宠物id
     * @return 返回影响的行数
     */
    public int deletePetById(Long id);

    /**
     * 获取宠物体重列表
     * @param petId 宠物id
     * @return 返回宠物体重列表
     */
    public List<PetWeight> petWeightListById(Long petId);

    /**
     * 添加一条宠物体重记录
     * @param petWeight 宠物体重信息
     * @return 返回操作影响的行数
     */
    public int addOnePetWeight(PetWeight petWeight);

    /**
     * 更新一条宠物记录
     * @param petWeight 宠物信息
     * @return 返回操作影响的行数
     */
    public int updateOnePetWeight(PetWeight petWeight);

    /**
     * 删除一条宠物体重记录
     * @param id 宠物体重id
     * @return 返回操作影响的行数
     */
    public int deleteOnePetWeight(Long id, Long petId);
}
